package br.ufcg.edu.algoritimo;

public class No implements Comparable<No>{
	
	public enum COR { BRANCO, CINZA, PRETO }
	
	public static No NULO = new No(null, null, 0, '|');
	private No esquerda;
	private No direita;
	private int valor;
	private char descricao;
	private boolean isFolha;
	private COR cor;
	
		
	public No(No esquerda, No direita, int valor,
			char descricao) {
		this.direita = direita;
		this.esquerda = esquerda;
		this.valor = valor;
		this.descricao = descricao;
		this.setCor(COR.BRANCO);
	}
	
	public No(No esquerda, No direita, int valor,
			Character descricao, boolean isFolha) {
		this(esquerda,direita,valor,descricao);
		this.isFolha = isFolha;
	}
	
	
	public No getEsquerda() {
		return esquerda;
	}
	public void setEsquerda(No esquerda) {
		this.esquerda = esquerda;
	}
	public No getDireita() {
		return direita;
	}
	public void setDireita(No direita) {
		this.direita = direita;
	}
	public int getValor() {
		return valor;
	}
	public void setValor(int valor) {
		this.valor = valor;
	}

	public char getDescricao() {
		return descricao;
	}

	public void setDescricao(char descricao) {
		this.descricao = descricao;
	}

	@Override
	public int compareTo(No no) {
		if (no == null) {
			return -1;
		}
		
		return valor - no.valor;
	}

	public boolean isFolha() {
		return isFolha;
	}

	public void setFolha(boolean folha) {
		this.isFolha = folha;
	}

	public COR getCor() {
		return cor;
	}

	public void setCor(COR cor) {
		this.cor = cor;
	}

}
